In general, cloud computing is a model for enabling on-demand network access to a shared pool of configurable computing resources. Many cloud computing systems accommodate multi-tenancy support, which provides service providers with the ability to create virtualized, separate tenants using the same infrastructure. A “tenant” refers to a user having his own set of data that remains logically isolated from data that belongs to other tenants. Thus, each tenant can have its own virtual applications, each of which is associated with one or more virtual machines.
However, support for multi-tenancy also creates an additional level of abstraction between the tenants and a storage level of the cloud computing system. With this new level of abstraction, virtual applications are difficult to back up because the abstraction hides the identifiers used to identify all the different virtual subcomponents (e.g., virtual machines) that together, comprise a virtual application.